package com.oak.broke.model.vip.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.oak.broke.model.vip.dto.api.SaveVipUserDTO;
import com.oak.broke.model.vip.dto.api.UpdateVipUserDTO;
import com.oak.broke.model.vip.dto.api.VipRenewalDTO;
import com.oak.broke.model.vip.entity.VipUserEntity;
import com.oak.broke.model.vip.vo.api.BaseVipInfoVO;
import com.oak.broke.model.vip.vo.api.VipUserVO;

import java.util.List;

/**
 * 会员用户表
 *
 * @author tanghan
 * @email broke@gmail.com
 * @date 2023-04-12 17:02:57
 */
public interface IVipUserService extends IService<VipUserEntity> {

    /**
     * 查询所有会员信息
     *
     * @param vipUserType 会员用户类型
     * @return
     */
    List<VipUserVO> listAllVipUser(String vipUserType);

    /**
     * 保存会员用户信息
     *
     * @param saveVipUserDTO 保存入参
     */
    void saveVipUser(SaveVipUserDTO saveVipUserDTO);

    /**
     * 会员续费
     *
     * @param vipRenewal
     */
    void vipRenewal(VipRenewalDTO vipRenewal);

    /**
     * 根据vipUserId查询会员信息
     *
     * @param vipUserId
     * @return
     */
    VipUserVO selectVipUserInfo(String vipUserId);

    /**
     * 更新会员信息
     *
     * @param updateVipUser
     */
    void updateVipUser(UpdateVipUserDTO updateVipUser);

    /**
     * 查询会员信息
     *
     * @param userRelationCode 用户关联code
     * @param vipUserType      vip用户类型
     * @return
     */
    BaseVipInfoVO selectVipInfo(String userRelationCode, String vipUserType);
}

